package com.condominio.JPA.facade;

import java.util.List;

import com.condominio.JPA.control.ConsultaControl;
import com.condominio.JPA.control.ContaControl;
import com.condominio.JPA.control.PessoaControl;
import com.condominio.JPA.control.RecadoControl;
import com.condominio.JPA.dao.ContaDao;
import com.condominio.JPA.model.Admin;
import com.condominio.JPA.model.Conta;
import com.condominio.JPA.model.Pessoa;
import com.condominio.JPA.model.Recado;

public class Facade {

	private static Facade facade;
	private ContaControl contaControl=new ContaControl();
	private PessoaControl pessoaControl=new PessoaControl();
	private RecadoControl recadoControl=new RecadoControl();
	private ConsultaControl consultaControl=new ConsultaControl();
	private Facade(){}

	public static Facade getInstance(){
		if(facade==null){
			facade = new Facade();
		}
		return facade;
	}

	//------------------PESSOA ------------------


	public List<Pessoa> findAllPessoa(){
		return pessoaControl.findAllPessoa();
	}

	public boolean login(Pessoa p) {
		return pessoaControl.login(p);

	}

	public boolean cadastrarPessoa(Pessoa p) {
		return pessoaControl.cadastrarPessoa(p);
	}

	public Pessoa findPessoa(Pessoa p) {
		return pessoaControl.findPessoaByLoginAndSenha(p);
	}

	public Pessoa findPessoaByAP(Pessoa p) {
		return pessoaControl.findPessoaByAP(p);
	}

	public boolean atualizarPessoa(Pessoa p) {
		return pessoaControl.atualizarPessoa(p);
	}

	public boolean excluirPessoa(Pessoa p) {
		return pessoaControl.excluirPessoa(p);
	}


	//-------------CONTA-----------------

	public boolean cadastrarConta(Conta p) {
		return contaControl.cadastrarConta(p);
	}

	public Conta findConta(Conta p) {
		return contaControl.findConta(p);
	}

	public Conta findConta(int id){
		return contaControl.findConta(id);
	}

	public Conta findConta(String nome){
		return contaControl.findConta(nome);		
	}

	public boolean atualizarConta(Conta p) {
		return contaControl.atualizarConta(p);		
	}

	public boolean excluirConta(Conta p) {
		return contaControl.excluirConta(p);
	}
	public List<Conta> findAllConta() {
		return contaControl.findAllConta();
	}




	//--------------RECAOS------------------------

	public Recado findRecado(Recado r) {
		return recadoControl.findRecadoById(r);
	}

	public boolean cadastrarRecado(Recado r) {
		return recadoControl.cadastrarRecado(r);
	}

	public List<Recado> findAllRecadoByDestinatarioAp(Pessoa p) {
		return recadoControl.findAllRecadoByDestinatarioAp(p);
	}
	public List<Recado> findAllRecadoByNome(Pessoa p) {
		return recadoControl.findAllRecadoByNome(p);
	}

	public List<Recado> findAllRecado() {
		return recadoControl.findAllRecado();
	}

	public boolean atualizarRecado(Recado re) {
		return recadoControl.atualizarRecado(re);
	}

	//=================QUERIES
	public List<Conta> qr1PegarContasAPartirdeDezReaisPorPessoa(Pessoa p) {
		return consultaControl.qr1PegarContasAPartirdeDezReaisPorPessoa(p);
	}

	public List<Pessoa> qr2PegarAdministradoresDoCondominio() {
		return consultaControl.qr2PegarAdministradoresDoCondominio();
	}

	public Object qr3PegarQtdeValorContasNaoPagasByPessoa(Pessoa p){
		return consultaControl.qr3PegarQtdeValorContasNaoPagasByPessoa(p);
	}
	public List<Conta> qr4PegarContasNaoPagasByPessoa(Pessoa p){
		return consultaControl.qr4PegarContasNaoPagasByPessoa(p);
	}

	public List<Recado> qr5PegarRecadosNulosByPessoa(Pessoa p) {
		return consultaControl.qr5PegarRecadosNulosByPessoa(p);
	}



	public int qr6AtualizarNomePessoaByPessoa(String antigo, String novo) {
		return consultaControl.qr6AtualizarNomePessoaByPessoa(antigo,novo);
	}

	/* public boolean excluirRecado(Pessoa p) {
		return recadoControl.excluirRecado(p);
	}*/

}
